package cn.tedu._03mybatis.mapper;

import cn.tedu._03mybatis.pojo.*;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface WeiboMapper {
    /**
     * 发布微博：在微博表中插入1条数据
     */
    // 注意：#{userId}
    //@Insert("INSERT INTO weibo(content,created,user_id) VALUES(#{content},#{created},#{userId})")
    int insert(Weibo weibo);

    /**
     * 根据微博id查询该条微博信息
     */
    // 1.注意：如果实体类属性名和数据库表字段名不一致,则使用别名方式解决
    //   比如：数据库表字段user_id, 实体类属性名userId, 在查询时使用别名：SELECT user_id userId ...
    // 2.此查询为全字段查询,即查询结果为所有字段,和实体类属性对应,所以返回值封装为实体类Weibo对象
    //@Select("SELECT id,content,created,user_id userId FROM weibo WHERE id=#{id}")
    Weibo selectByWeiboId(int id);

    /**
     * 查询所有的微博信息
     */
    //@Select("SELECT id,content,created,user_id userId FROM weibo")
    List<Weibo> selectWeiboAll();

    /**
     * 查询指定id微博的 内容和用户id
     */
    //@Select("SELECT content,user_id userId FROM weibo WHERE id=#{id}")
    WeiboByIdVO selectById(int id);

    /**
     * 练习1：查询所有微博的 内容和用户id,放到List集合中
     */
    //@Select("SELECT content,user_id userId FROM weibo")
    List<WeiboByIdVO> selectWeiboEg1();

    /**
     * 练习2：根据用户id查询用户的 用户名、密码和昵称,封装到 UserVO 类中
     */
    //@Select("SELECT username,password,nickname FROM user WHERE id=#{uid}")
    UserVO selectByUserId(int uid);

    /**
     * 根据微博ID修改微博信息
     */
    //@Update("UPDATE weibo SET content=#{content},created=#{created},user_id=#{userId} WHERE id=#{id}")
    int updateWeiboById(Weibo weibo);

    /**
     * 根据ID删除微博数据
     * DELETE FROM weibo WHERE id=?
     */
    //@Delete("DELETE FROM weibo WHERE id=#{id}")
    int deleteByWeiboId(int id);

    /**
     * 多表:微博列表页展示
     */
    List<WeiboIndexVO> selectIndex();

    /**
     * 多表:微博详情页展示
     */
    WeiboDetailVO selectDetail(int wid);

    /**
     * ResultMap单表查询示例
     * SELECT id, content, user_id FROM weibo
     */
    WeiboResultMapVO1 selectByIdResultMap1(int wid);

    /**
     * ResultMap多表查询
     * 将指定用户发布的微博存放到List集合中
     */
    WeiboResultMapVO2 selectByIdResultMap2(int uid);

    /**
     * -- 查询指定微博的所有评论
     * -- 显示字段: 微博ID  微博内容  当前微博的所有评论-全字段[List集合]
     */
    WeiboResultMapVO3 selectByIdResultMap3(int wid);
}
















